<?php
include 'lib/Image.class.php';
include 'lib/zipfile.php';

ini_set('memory_limit','64M');
set_time_limit(600);//设置超时限制为６分钟

//处理水印

//定义存放文件夹
//建立 下载图片 放置水印的文件夹
$waterImagePath = date('Y-m-dHis');
mkdir($waterImagePath, 0777);


//处理需要下载的图片 加水印 放入新文件夹内
$image = new Image();
//需要打包带水印的图片
$waterImageArr = [];
for ($i = 1; $i <= 30; $i++) {
    //简单模拟不同的图片
    $image->open('./images/img (' . $i . ').jpg');
    $newfilename = $waterImagePath . '/' . $i . '.jpg';
    $image->water('./images/logo.png', 5, 80)->save($newfilename);
    $waterImageArr[] = array('image_src' => $newfilename, 'image_name' => $i . '.jpg');
}


//以下是需要下载的图片数组信息，将需要下载的图片信息转化为类似即可
$image = $waterImageArr;

//加好水印  打包下载

$dfile = tempnam('/tmp', 'tmp');//产生一个临时文件，用于缓存下载文件
$zip = new zipfile();
//----------------------
$filename = 'image.zip'; //下载的默认文件名

foreach ($image as $v) {
    $zip->add_file(file_get_contents($v['image_src']), $v['image_name']);
    //$zip->add_path('./images');
    // 添加打包的图片，第一个参数是图片内容，第二个参数是压缩包里面的显示的名称, 可包含路径
    // 或是想打包整个目录 用 $zip->add_path($image_path);
}
//----------------------
$zip->output($dfile);

// 下载文件
ob_clean();
header('Pragma: public');
header('Last-Modified:' . gmdate('D, d M Y H:i:s') . 'GMT');
header('Cache-Control:no-store, no-cache, must-revalidate');
header('Cache-Control:pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding:binary');
header('Content-Encoding:none');
header('Content-type:multipart/form-data');
header('Content-Disposition:attachment; filename="' . $filename . '"'); //设置下载的默认文件名
header('Content-length:' . filesize($dfile));
$fp = fopen($dfile, 'r');
while (connection_status() == 0 && $buf = @fread($fp, 8192)) {
    echo $buf;
}
fclose($fp);
@unlink($dfile);
@flush();
@ob_flush();


//删除水印图片
foreach (scandir($waterImagePath) as $userdimg) {
    if ($userdimg == '.' || $userdimg == '..') {
        continue;
    }
    @unlink($waterImagePath . '/' . $userdimg);
}

//删除文件夹
rmdir($waterImagePath);
exit();
?>

